# app.py

import streamlit as st
from src.core_logic import get_rag_answer, generate_logo
from dotenv import load_dotenv # <-- 新增
load_dotenv()

# --- 页面配置 ---
st.set_page_config(
    page_title="CodeDev-Insight",
    page_icon="💡",
    layout="wide"
)

# --- 页面标题 ---
st.title("💡 CodeDev-Insight: 智能代码库分析助手")
st.markdown("与你的代码库对话，生成新代码，甚至创造视觉素材！")

# --- 功能选项卡 ---
tab1, tab2 = st.tabs(["💬 代码问答与生成", "🎨 图像生成"])

# --- Tab 1: 代码问答与生成 ---
with tab1:
    st.header("与你的代码库对话")

    # 初始化聊天历史
    if "messages" not in st.session_state:
        st.session_state.messages = []

    # 显示聊天历史
    for message in st.session_state.messages:
        with st.chat_message(message["role"]):
            st.markdown(message["content"])

    # 接收用户输入
    if prompt := st.chat_input("请提出关于代码库的问题，或要求生成新代码..."):
        # 将用户消息添加到聊天历史
        st.session_state.messages.append({"role": "user", "content": prompt})
        with st.chat_message("user"):
            st.markdown(prompt)

        # 获取 AI 回答
        with st.chat_message("assistant"):
            with st.spinner("思考中..."):
                response = get_rag_answer(prompt)
                st.markdown(response)

        # 将 AI 回答添加到聊天历史
        st.session_state.messages.append({"role": "assistant", "content": response})

# --- Tab 2: 图像生成 ---
with tab2:
    st.header("为你的项目生成 Logo")

    default_prompt = "为一款名为 'CodeDev-Insight' 的智能代码分析工具设计一个Logo，风格要现代、科技感，主色调为蓝色和白色，包含代码符号（如</>）和大脑/灯泡的元素。"

    image_prompt = st.text_area(
        "请输入 Logo 设计的要求 (Prompt):",
        value=default_prompt,
        height=150
    )

    if st.button("✨ 生成 Logo"):
        with st.spinner("正在召唤设计师..."):
            image_url = generate_logo(image_prompt)
            if image_url.startswith("http"):
                st.image(image_url, caption="由 DALL-E 3 生成的 Logo", use_column_width=True)
                st.success("Logo 生成成功！")
            else:
                st.error(image_url)